package it.traveldream.entities;

import it.traveldreamClient.beans.dto.EscursioneDTO;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Entity implementation class for Entity: Escursione
 *
 */
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public
class Escursione extends Componente implements Serializable {

	
    @ManyToMany(mappedBy="escursioni",fetch=FetchType.EAGER, targetEntity=Pacchetto.class)
    private List<Pacchetto> listaPacchetti;  
   
	@Column(nullable = false)
	private String luogo;
	@Column(nullable = false)
	private String descrizione;
	@Column(nullable = false)
	@Temporal(TemporalType.DATE)
	private Date dataInizio;	
	@Column(nullable = false)
	private Integer durata;
	private static final long serialVersionUID = 1L;

	public Escursione() {
		super();
	}   
	
	public Escursione(Escursione esc){	
		this.nome=esc.getNome();
		this.luogo=esc.getLuogo();
		this.descrizione=esc.getDescrizione();
		this.durata= esc.getDurata();	
		this.dataInizio=esc.getDataInizio();
		this.Disponibilita=true;
		this.Prezzo=esc.getPrezzo();		
	}
	
	public Escursione(EscursioneDTO esc){	
		this.nome=esc.getNome();
		this.luogo=esc.getLuogo();
		this.descrizione=esc.getDescrizione();
		this.durata= Integer.parseInt(esc.getDurata());	
		this.dataInizio=esc.getDataInizio();
		this.Disponibilita=true;
		this.Prezzo=Integer.parseInt(esc.getPrezzo());		
	}
	
	public String getCitta() {
		return this.luogo;
	}

	public void setCitta(String Citta) {
		this.luogo = Citta;
	}   
	public String getDescrizione() {
		return this.descrizione;
	}

	public void setDescrizione(String Descrizione) {
		this.descrizione = Descrizione;
	}   
	
	public String getLuogo() {
		return luogo;
	}


	public void setLuogo(String luogo) {
		this.luogo = luogo;
	}


	public Date getDataInizio() {
		return dataInizio;
	}


	public void setDataInizio(Date dataInizio) {
		this.dataInizio = dataInizio;
	}


	public Integer getDurata() {
		return this.durata;
	}

	public void setDurata(Integer Durata) {
		this.durata = Durata;
	}
	
	
	public List<Pacchetto> getListaPacchetti() {
		return listaPacchetti;
	}


	public void setListaPacchetti(List<Pacchetto> listaPacchetti) {
		this.listaPacchetti = listaPacchetti;
	}


	

	public EscursioneDTO getDTO() {
		EscursioneDTO v = new EscursioneDTO();
		v.setRegalo(isRegalo());
		v.setDataInizio(dataInizio);
		v.setDescrizione(descrizione);
		v.setDurata(durata.toString());
		v.setLuogo(luogo);
		v.setIdProdotto(this.idProdotto);
		v.setNome(this.nome);
		v.setPrezzo(this.Prezzo.toString());
		v.setDisponibilita(getDisponibilita());
		return v;
	}
   
}
